const {ccclass, property} = cc._decorator;

@ccclass
export default class Start extends cc.Component {

    @property({displayName: "开始游戏按钮", tooltip: "开始游戏按钮", type: cc.Node})
    start_game_btn: cc.Node = null;

    @property({displayName: "加载进度条父节点", tooltip: "加载进度条父节点", type: cc.Node})
    load_parent: cc.Node = null;

    @property({displayName: "进度条几秒加载完", tooltip: "进度条几秒加载完", type: cc.Float})
    load_time: number = 3;

    @property({displayName: "显示进度的文字", tooltip: "显示进度的文字", type: cc.Label})
    load_progress_lb: cc.Label = null;

    @property({displayName: "小提示文字", tooltip: "小提示文字", type: cc.Label})
    hint_lb: cc.Label = null;

    @property({displayName: "小提示", tooltip: "小提示，代码会随机在里面抽取一个显示到文字上", type: cc.String})
    hint: string[] = [];

    @property({displayName: "显示进度的填充精灵", tooltip: "显示进度的填充精灵", type: cc.Sprite})
    load_progress_sr: cc.Sprite = null;


    // 是否开始加载
    is_start_load: boolean = false;


    // 用户相关数据
    user_data = {
        LV: 1,
        EXP: 0,
        /* 
        等级
         */
    };



    onLoad () {
        // 随机数，并且取整，目的是随机显示小提示
        let num = Math.floor(this.randomNumber(0, this.hint.length - 1));
        // 显示小提示
        this.hint_lb.string = "小提示：" + this.hint[num];


        // 获取用户数据
        let data = JSON.parse(cc.sys.localStorage.getItem("user_data"));
        // 如果用户数据为空
        if (data == null) {
            // 初始化
            cc.sys.localStorage.setItem("user_data", JSON.stringify(this.user_data));
            cc.log("用户数据初始化");
            cc.log(JSON.parse(cc.sys.localStorage.getItem("user_data")));
        } 


        // 获取用户数据
        let c = cc.sys.localStorage.getItem("choose");
        // 如果用户数据为空
        if (c == null) {
            // 初始化
            cc.sys.localStorage.setItem("choose", 1);
        } 


        // 获取用户数据
        let m = cc.sys.localStorage.getItem("money");
        // 如果用户数据为空
        if (m == null) {
            // 初始化
            cc.sys.localStorage.setItem("money", 0);
        } 



        // 获取任务数据
        let t = cc.sys.localStorage.getItem("Task");
        // 如果为空
        if (t == null) {
            // 初始化
            cc.sys.localStorage.setItem("Task", "0,0,0,0,0,0,0");
        }
    }

    start () {
        // 预加载选择场景和村庄场景
        cc.director.preloadScene("Village");
        cc.director.preloadScene("Choose");
    }


    // 开始游戏函数 绑定在开始游戏按钮上
    onbtn_start_game () {
        // cc.director.loadScene("Village");
        // 隐藏开始游戏按钮
        this.start_game_btn.active = false;
        // 显示加载进度条
        this.load_parent.active = true;
        // this.load_game();
        this.is_start_load = true;
    }

    update (dt: number) {
        // 如果开始加载
        if (this.is_start_load == true) {
            // 开始填充进度条并更新文字显示  文字显示保留两位小数
            // cc.log("开始加载");
            // 加进度条填充
            this.load_progress_sr.fillRange += dt / this.load_time;
            // 进度文字显示
            this.load_progress_lb.string = ((this.load_progress_sr.fillRange) * 100).toFixed(2) + "%";
            // 如果加载完成
            if (this.load_progress_sr.fillRange >= 1) {
                // 0.8秒后跳转到村庄场景
                this.scheduleOnce(function () {
                    cc.director.loadScene("Village");
                    cc.log("加载完成跳转场景");   
                }, 0.8); 
            }
        }
    }

    // 封装好的随机数函数，min为最小值，max为最大值
    randomNumber(min : number, max : number): number{
        return Math.round(Math.random() * (min - max) + max);
    }

    /* load_game () {
        this.load_progress_lb.string = "0.00%";
        this.load_progress_sr.fillRange = 0;
        cc.director.preloadScene("Village", (completedCount, totalCount, item) => {
            let pro = completedCount / totalCount;
            this.load_progress_sr.fillRange = pro;
            this.load_progress_lb.string = (pro * 100) + "%";
            cc.log(pro);
        },() => {
            cc.director.loadScene("Village");
        });
    } */

}
